package com.ce.webframework.sec.service.impl;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.ce.util.BlankUtil;
import com.ce.webframework.sec.dao.ISecMenuitemDao;
import com.ce.webframework.sec.model.SecMenuitemDO;
import com.ce.webframework.sec.service.ISecMenuitemService;
import com.ce.webframework.sec.vo.SecMenuitemVO;
import com.sitechasia.webx.core.service.impl.BaseService;
import com.sitechasia.webx.core.utils.base.PopulateUtil;

public class SecMenuitemServiceImpl extends BaseService implements ISecMenuitemService {

	private ISecMenuitemDao secMenuitemDao;

	public void setSecMenuitemDao(ISecMenuitemDao secMenuitemDao){
		this.secMenuitemDao = secMenuitemDao;
	}

	/**
	 * 功能描述:通过权限查询菜单集合
	 * @param userId  用户标识
	 * @param funcodes 权限标识 集合
	 * @param epId  企业标识
	 * @return SecMenuitemVO 集合
	 */
	public List<SecMenuitemVO> getMenuItemList(List<String> funcodes, Long epId){

		if(funcodes == null)
			return new ArrayList<SecMenuitemVO>();
		List<SecMenuitemDO> dos = secMenuitemDao.getMenuItemList(funcodes, epId);
		List<SecMenuitemVO> menuLvl1 = new ArrayList<SecMenuitemVO>();
		List<SecMenuitemVO> menuLvl2 = new ArrayList<SecMenuitemVO>();
		List<SecMenuitemVO> menuLvl3 = new ArrayList<SecMenuitemVO>();;
		if(dos != null){
		for(SecMenuitemDO temp : dos){
			SecMenuitemVO vo = new SecMenuitemVO();
			PopulateUtil.populate(temp, vo);
			if("1".equals(temp.getLvl())){
				menuLvl1.add(vo);
			}else if("2".equals(temp.getLvl())){
				menuLvl2.add(vo);
			}else if("3".equals(temp.getLvl())){
				menuLvl3.add(vo);
			}
		}

		//第一级
		Boolean isChild1 = false;
		Boolean isChild2 = false;

		for(SecMenuitemVO itemLvl1 : menuLvl1){//循环第一级
			List<SecMenuitemVO> tempLvl2 = new ArrayList<SecMenuitemVO>();


			for(SecMenuitemVO itemLvl2 : menuLvl2){//第二级

				if(itemLvl1.getMenuitemId().equals(itemLvl2.getParentId())){//判断父菜单
					tempLvl2.add(itemLvl2);
					isChild1 = true;

					List<SecMenuitemVO> tempLvl3 = new ArrayList<SecMenuitemVO>();

					for(SecMenuitemVO itemLvl3 : menuLvl3){//第二级

						if(itemLvl2.getMenuitemId().equals(itemLvl3.getParentId())){//判断父菜单
							tempLvl3.add(itemLvl3);
							isChild2 = true;
						}
					}
					if(isChild2 == true){
						itemLvl2.setChildBarId("childBar_"+itemLvl2.getMenuitemId());
						itemLvl2.setSecMenuitemVOs(tempLvl3);
					}
					isChild2 = false;
				}
			}
			if(isChild1 == true){
				itemLvl1.setChildBarId("childBar_"+itemLvl1.getMenuitemId());
				itemLvl1.setSecMenuitemVOs(tempLvl2);
			}
			isChild1 = false;
		}

	}
		return menuLvl1;
	}

	 public List<SecMenuitemVO> getNavList(List<String> funcodes)
	  {
	    List menuLvl1 = new ArrayList();

	    List dos = this.secMenuitemDao.getNavList(funcodes);
	    if (!(BlankUtil.isBlank(dos))) {
	      for (Iterator localIterator = dos.iterator(); localIterator.hasNext(); ) { SecMenuitemDO temp = (SecMenuitemDO)localIterator.next();
	        SecMenuitemVO vo = new SecMenuitemVO();
	        PopulateUtil.populate(temp, vo);
	        menuLvl1.add(vo);
	      }

	    }

	    return menuLvl1;
	  }
}
